// pages/persondetail/persondetail.js
Page({

  /**
   * 页面的初始数据
   */
  data: {
    name: '无声的海洋',
    img: '/images/head.png',
    iphone: '12345678923',
    note: '沉默是金',
    disabled: true, // 提交按钮默认禁用
    cloudImgId: null // 存储上传的云图片ID
  },

  /**
   * 生命周期函数--监听页面加载
   */
  onLoad(options) {},

  /**
   * 生命周期函数--监听页面初次渲染完成
   */
  onReady() {},

  /**
   * 生命周期函数--监听页面显示
   */
  onShow() {
    let userinfo = wx.getStorageSync('userinfo'); // 从缓存获取用户信息
    this.setData({
      name: userinfo.name, // 更新用户名
      img: userinfo.img, // 更新头像
      iphone: userinfo.iphone, // 更新手机号
      note: userinfo.note // 更新个性签名
    });
  },

  /**
   * 生命周期函数--监听页面隐藏
   */
  onHide() {
    this.cleanUpCloudImage(); // 页面隐藏时清理未提交的云图片
  },

  /**
   * 生命周期函数--监听页面卸载
   */
  onUnload() {
    this.cleanUpCloudImage(); // 页面卸载时清理未提交的云图片
  },

  /**
   * 清理未提交的云图片
   */
  cleanUpCloudImage() {
    if (this.data.cloudImgId && !this.data.disabled) {
      wx.cloud.deleteFile({
        fileList: [this.data.cloudImgId], // 删除云图片
        success: () => console.log('清理未提交的云图片成功'),
        fail: err => console.error('清理未提交的云图片失败', err)
      });
    }
  },

  /**
   * 输入框内容变化处理函数
   */
  input_msg(e) {
    const id = e.currentTarget.dataset.id; // 获取输入框的data-id
    const value = e.detail.value; // 获取输入值
    this.setData({
      [id]: value, // 动态更新对应字段
      disabled: false // 启用提交按钮
    });
  },

  /**
   * 上传图片处理函数
   */
  UpImg() {
    wx.chooseImage({
      count: 1, // 只能选择一张图片
      sizeType: ['compressed'], // 压缩图片
      sourceType: ['album', 'camera'], // 从相册或相机选择
      success: (res) => {
        const tempFilePath = res.tempFilePaths[0]; // 获取临时文件路径
        const cloudPath = `${this.data.name}_${Date.now()}.jpg`; // 生成云存储路径

        wx.cloud.uploadFile({
          cloudPath,
          filePath: tempFilePath,
          success: (res) => {
            this.setData({
              img: res.fileID, // 更新图片显示
              cloudImgId: res.fileID, // 存储云图片ID
              disabled: false // 启用提交按钮
            });
          },
          fail: err => console.error('上传失败', err)
        });
      },
      fail: err => console.error('选择图片失败', err)
    });
  },

  /**
   * 提交修改处理函数
   */
  submit() {
    wx.showLoading({ title: '提交中...' }); // 显示加载提示

    const userinfo = wx.getStorageSync('userinfo'); // 获取缓存中的用户信息

    wx.cloud.callFunction({
      name: 'checkRegister', // 调用云函数
      data: {
        action: 'update', // 操作类型
        userInfo: { // 用户信息
          _id: userinfo._id,
          name: this.data.name,
          iphone: this.data.iphone,
          note: this.data.note
        },
        img: this.data.img // 用户头像
      },
      success: (res) => {
        wx.hideLoading(); // 隐藏加载提示
        if (res.result.code === 0) {
          wx.showToast({ title: '更新成功' }); // 显示成功提示
          wx.setStorageSync('userinfo', { // 更新本地缓存
            ...userinfo,
            name: this.data.name,
            iphone: this.data.iphone,
            note: this.data.note,
            img: this.data.img
          });
          this.setData({ disabled: true }); // 禁用提交按钮
          
          // 延迟 1 秒后返回上一页
          setTimeout(() => {
            wx.navigateBack();
          }, 1000);
        } else {
          wx.showToast({ title: '更新失败', icon: 'none' }); // 显示失败提示
        }
      },
      fail: err => {
        wx.hideLoading(); // 隐藏加载提示
        wx.showToast({ title: '服务器错误', icon: 'none' }); // 显示错误提示
      }
    });
  }
});